{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 引入数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "#引用包\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy import stats\n",
    "import pymysql\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "plt.rcParams['font.family']='SimHei'\n",
    "plt.rcParams['axes.unicode_minus']= False "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>user_id</th>\n",
       "      <th>timestamp</th>\n",
       "      <th>group</th>\n",
       "      <th>landing_page</th>\n",
       "      <th>converted</th>\n",
       "      <th>date</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>851104</td>\n",
       "      <td>2017-01-21 22:11:48.556739</td>\n",
       "      <td>control</td>\n",
       "      <td>old_page</td>\n",
       "      <td>0</td>\n",
       "      <td>2017-01-21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>804228</td>\n",
       "      <td>2017-01-12 08:01:45.159739</td>\n",
       "      <td>control</td>\n",
       "      <td>old_page</td>\n",
       "      <td>0</td>\n",
       "      <td>2017-01-12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>661590</td>\n",
       "      <td>2017-01-11 16:55:06.154213</td>\n",
       "      <td>treatment</td>\n",
       "      <td>new_page</td>\n",
       "      <td>0</td>\n",
       "      <td>2017-01-11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>853541</td>\n",
       "      <td>2017-01-08 18:28:03.143765</td>\n",
       "      <td>treatment</td>\n",
       "      <td>new_page</td>\n",
       "      <td>0</td>\n",
       "      <td>2017-01-08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>864975</td>\n",
       "      <td>2017-01-21 01:52:26.210827</td>\n",
       "      <td>control</td>\n",
       "      <td>old_page</td>\n",
       "      <td>1</td>\n",
       "      <td>2017-01-21</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   user_id                   timestamp      group landing_page  converted  \\\n",
       "0   851104  2017-01-21 22:11:48.556739    control     old_page          0   \n",
       "1   804228  2017-01-12 08:01:45.159739    control     old_page          0   \n",
       "2   661590  2017-01-11 16:55:06.154213  treatment     new_page          0   \n",
       "3   853541  2017-01-08 18:28:03.143765  treatment     new_page          0   \n",
       "4   864975  2017-01-21 01:52:26.210827    control     old_page          1   \n",
       "\n",
       "         date  \n",
       "0  2017-01-21  \n",
       "1  2017-01-12  \n",
       "2  2017-01-11  \n",
       "3  2017-01-08  \n",
       "4  2017-01-21  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv(r\"ab_data.csv\")\n",
    "data[\"date\"] = data.timestamp.str[:10]\n",
    "data.head() "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "alpha = 0.05\n",
    "beta = 0.2 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 计算二类指标样本量"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.1203863045004612"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#计算p0\n",
    "p0 = data.converted[(data.group==\"control\") & (data.landing_page==\"old_page\")].mean()\n",
    "p0 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.10589344218918344"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p10 = p0 * (1-p0)\n",
    "p10 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.6448536269514722 0.8416212335729143\n"
     ]
    }
   ],
   "source": [
    "z_alpha = stats.norm.ppf(1-alpha)\n",
    "z_beta = stats.norm.ppf(1-beta)\n",
    "print(z_alpha,z_beta) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.1303863045004612 0.01\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.11338571609917422"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#计算P值，无法理解\n",
    "p = p0 + 0.01\n",
    "p01 = 0.01\n",
    "print(p,p01) \n",
    "p1_p = p * (1-p)\n",
    "p1_p "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6701.938803160916"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "n=p10 * ((z_alpha+z_beta * np.sqrt(p1_p/p10))/(p-p0))**2\n",
    "n "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "group      landing_page\n",
       "control    new_page          1928\n",
       "           old_page        145274\n",
       "treatment  new_page        145311\n",
       "           old_page          1965\n",
       "Name: user_id, dtype: int64"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#计算最低样本量\n",
    "data.groupby([\"group\",\"landing_page\"])[\"user_id\"].count() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 进行检验"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>group</th>\n",
       "      <th>landing_page</th>\n",
       "      <th>converted</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>control</td>\n",
       "      <td>new_page</td>\n",
       "      <td>0.106383</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>control</td>\n",
       "      <td>old_page</td>\n",
       "      <td>0.113809</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>treatment</td>\n",
       "      <td>new_page</td>\n",
       "      <td>0.113781</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>treatment</td>\n",
       "      <td>old_page</td>\n",
       "      <td>0.097826</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       group landing_page  converted\n",
       "0    control     new_page   0.106383\n",
       "1    control     old_page   0.113809\n",
       "2  treatment     new_page   0.113781\n",
       "3  treatment     old_page   0.097826"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = data[data.date==\"2017-01-03\"].groupby([\"group\",\"landing_page\"],as_index=False)[\"converted\"].mean()\n",
    "df "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-2.820284587351507e-05"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bizhi = df.converted[2] - df.converted[1]\n",
    "bizhi "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6590 6618\n"
     ]
    }
   ],
   "source": [
    "n1 = data[data.date==\"2017-01-03\"].converted[(data.group==\"control\") & (data.landing_page==\"old_page\")].size\n",
    "n2 = data[data.date==\"2017-01-03\"].converted[(data.group==\"treatment\") & (data.landing_page==\"new_page\")].size\n",
    "print(n1,n2) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.005526379176809786"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sigma = np.sqrt(df.converted[2] * (1-df.converted[2])/n2 + df.converted[1] * (1-df.converted[1])/n1)\n",
    "sigma "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5020359187180234"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sp = 1-stats.norm.cdf(bizhi,0,sigma)\n",
    "sp "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 封包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "def abtest(df:pd.DataFrame,group_col:str=None,value_col:str=None,alpha:float=0.05):\n",
    "    if not group_col:\n",
    "        group_col = df.columns[0]\n",
    "    if not value_col:\n",
    "        value_col = df.columns[1]\n",
    "\n",
    "    temp = df.groupby(group_col,as_index=False)[value_col].mean()\n",
    "    temp_n = df.groupby(group_col,as_index=False)[value_col].count()\n",
    "    tongjiliang=temp.iloc[0,1] - temp.iloc[1,1]\n",
    "\n",
    "    diff_error = np.sqrt(temp.iloc[0,1]*(1-temp.iloc[0,1])/temp_n.iloc[0,1] + temp.iloc[1,1]*(1-temp.iloc[1,1])/temp_n.iloc[1,1])\n",
    "\n",
    "    tongjiliang_left_p = stats.norm.cdf(tongjiliang,0,diff_error)\n",
    "    tongjiliang_right_p = 1-stats.norm.cdf(tongjiliang,0,diff_error)\n",
    "    tongjiliang_site_p = tongjiliang_left_p * 2\n",
    "\n",
    "    if tongjiliang_site_p > 1:\n",
    "        tongjiliang_site_p = tongjiliang_right_p*2\n",
    "\n",
    "    temp_l = [\n",
    "    [temp.iloc[0,0],temp.iloc[1,0],tongjiliang,\"左侧\",tongjiliang_left_p,np.where(tongjiliang_left_p<alpha,\"显著\",\"不显著\")],\n",
    "    [temp.iloc[0,0],temp.iloc[1,0],tongjiliang,\"右侧\",tongjiliang_right_p,np.where(tongjiliang_right_p<alpha,\"显著\",\"不显著\")],\n",
    "    [temp.iloc[0,0],temp.iloc[1,0],tongjiliang,\"双侧\",tongjiliang_site_p,np.where(tongjiliang_site_p<alpha,\"显著\",\"不显著\")]\n",
    "    ]\n",
    "\n",
    "    temp = pd.DataFrame(temp_l,columns = [\"p\",\"p0\",\"统计量\",\"检测\",\"p_value\",\"结果\"])\n",
    "\n",
    "    return temp \n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>group</th>\n",
       "      <th>converted</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>treatment</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>treatment</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>57</th>\n",
       "      <td>control</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>72</th>\n",
       "      <td>treatment</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>84</th>\n",
       "      <td>control</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        group  converted\n",
       "38  treatment          0\n",
       "41  treatment          0\n",
       "57    control          0\n",
       "72  treatment          0\n",
       "84    control          0"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "temp = data[data.date==\"2017-01-03\"].loc[((data.group==\"control\")&(data.landing_page==\"old_page\"))\n",
    "                                        | ((data.group==\"treatment\")&(data.landing_page==\"new_page\")),[\"group\",\"converted\"]]\n",
    "temp.head() "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>p</th>\n",
       "      <th>p0</th>\n",
       "      <th>统计量</th>\n",
       "      <th>检测</th>\n",
       "      <th>p_value</th>\n",
       "      <th>结果</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>control</td>\n",
       "      <td>treatment</td>\n",
       "      <td>0.000028</td>\n",
       "      <td>左侧</td>\n",
       "      <td>0.502036</td>\n",
       "      <td>不显著</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>control</td>\n",
       "      <td>treatment</td>\n",
       "      <td>0.000028</td>\n",
       "      <td>右侧</td>\n",
       "      <td>0.497964</td>\n",
       "      <td>不显著</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>control</td>\n",
       "      <td>treatment</td>\n",
       "      <td>0.000028</td>\n",
       "      <td>双侧</td>\n",
       "      <td>0.995928</td>\n",
       "      <td>不显著</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         p         p0       统计量  检测   p_value   结果\n",
       "0  control  treatment  0.000028  左侧  0.502036  不显著\n",
       "1  control  treatment  0.000028  右侧  0.497964  不显著\n",
       "2  control  treatment  0.000028  双侧  0.995928  不显著"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "abtest(temp) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
